/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package sql;

import gui.MainWin;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
import logic.Varpool;

/**
 *
 * @author Freshman
 */
public final class UpdateTable {
    
    private Varpool vap;
    private MainWin mw;
    private PreparedStatement ps;

    public UpdateTable(Varpool variables, MainWin aThis) {
        this.vap = variables;
        this.mw = aThis;
        updateDB();
    }
    
    public void updateDB() {
        for (int i = 0; i < vap.getAlt().size(); i++) {
            String newEntry = vap.getAlt().get(i).getNewEntry();
            String prep = newEntry.replace("\'", "\'\'");
            String sql = "UPDATE `"+ vap.getDbname() +"`.`"+ vap.getAlt().get(i).getTableName()
                    +"` SET `"+ vap.getAlt().get(i).getRowName() +"` = '"
                    + prep +"' WHERE `"+ vap.getAlt().get(i).getTableName()
                    +"`.`id` = "+ (vap.getAlt().get(i).getRow()+1) +"";
            try {
                ps = vap.getCon().prepareStatement(sql);
                if (ps.executeUpdate() != 1) {
                    mw.setStatus("Fehler: Daten nicht mehr vorhanden!");
                }
                mw.setStatus("Die Daten wurden erfolgreich der Datenbank übergeben!");
            } catch (SQLException ex) {
            Logger.getLogger(UpdateTable.class.getName()).log(Level.SEVERE, null, ex);
            mw.setStatus("Fehler: Tabelle konnte nicht mit dem neuen Wert aktualisiert werden: " + ex.getMessage());
        } finally {
                try {
                    ps.close();
                } catch (SQLException ex) {
                    Logger.getLogger(GetTables.class.getName()).log(Level.SEVERE, null, ex);
                    mw.setStatus("Fehler beim Beenden des PreparedStatement: " + ex.getMessage());
                }
            }
        }
    }
}
